package com.ruoyi.laboratory.domain.dto;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.laboratory.domain.LabResearchProject;
import lombok.*;
import java.util.Set;

import com.ruoyi.laboratory.domain.common.LabBaseDTO;

/**
 * 科研项目DTO对象
 *
 * @author liangh
 * @date 2024-11-07
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LabResearchProjectDTO extends LabBaseDTO {

    private static final long serialVersionUID = 1L;

    /** 主键ids */
    @ApiModelProperty("主键ids")
    private Set<String> ids;

    /** 主键id */
    @ApiModelProperty("主键id")
    private String id;

    /** 来源 */
    @ApiModelProperty("来源")
    private String source;

    /** 项目id */
    @ApiModelProperty("项目id")
    private Long projectId;

    /** 项目编码 */
    @ApiModelProperty("项目编码")
    private String projectCode;

    /** 项目名称 */
    @ApiModelProperty("项目名称")
    private String projectName;

    /** 组织单位 */
    @ApiModelProperty("组织单位")
    private String organizedBy;

    /** 组织单位ID */
    @ApiModelProperty("组织单位ID")
    private String organizedById;

    /** 组织方机构类型  1: 集团 2: 专业公司 3: 承担单位 */
    @ApiModelProperty("组织方机构类型  1: 集团 2: 专业公司 3: 承担单位")
    private String organizedByType;

    /** 项目层级（字典表代码：项目、课题、专题） */
    @ApiModelProperty("项目层级")
    private String projectLevel;

    /** 项目级别（字典表代码：国家级（A级）、集团级（B级）、专业公司（C级）、所属企业（D级）） */
    @ApiModelProperty("项目级别")
    private String projectCategory;

    /** 研究开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("研究开始时间")
    private Date researchStartDate;

    /** 研究结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("研究结束时间")
    private Date researchEndDate;

    /** 项目经理 */
    @ApiModelProperty("项目经理")
    private String projectManager;

    /** 项目经理id */
    @ApiModelProperty("项目经理id")
    private Long projectManagerId;

    /** 经费（万元） */
    @ApiModelProperty("经费")
    private Long funds;

    /** 同步时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("同步时间")
    private Date syncTime;

    /** 计划任务书编号 */
    @ApiModelProperty("计划任务书编号")
    private String planCode;

    /** 文件 */
    @ApiModelProperty("文件")
    private String fileKeys;


    /**
     * 转换DO
     * @return DO
     */
    public LabResearchProject coverToDO(){
        return BeanUtil.copyProperties(this, LabResearchProject.class);
    }

}

